package com.gitee.qdbp.general.system.biz.permission.dao;

import java.util.List;
import com.gitee.qdbp.able.jdbc.paging.Paging;
import com.gitee.qdbp.base.annotation.OperateTraces;
import com.gitee.qdbp.base.model.condition.OrderWhere;
import com.gitee.qdbp.base.model.condition.Where;
import com.gitee.qdbp.general.system.api.permission.model.ResourceCoreBean;
import com.gitee.qdbp.general.system.api.permission.model.ResourceCoreUpdate;
import com.gitee.qdbp.general.system.api.permission.model.ResourceCoreWhere;

/**
 * 资源信息DAO
 *
 * @author zhh
 * @version 170712
 */
@OperateTraces(enable = true)
public interface IResourceCoreBasicDao {

    /**
     * 按条件查询单个对象,一般是根据ID或CODE查询
     *
     * @param where 查询条件
     * @return 资源信息
     */
    @OperateTraces(operate = "资源信息-查询")
    ResourceCoreBean find(Where<ResourceCoreWhere> where);

    /**
     * 按条件查询
     *
     * @param where 查询条件
     * @param paging 分页条件
     * @return 资源信息列表
     */
    @OperateTraces(operate = "资源信息-查询")
    List<ResourceCoreBean> list(OrderWhere<ResourceCoreWhere> where, Paging paging);

    /**
     * 创建资源信息记录
     *
     * @param model 资源信息信息
     * @return 影响行数
     */
    @OperateTraces(operate = "资源信息-创建")
    int insert(ResourceCoreBean model);

    /**
     * 批量创建资源信息记录
     *
     * @param model 资源信息信息
     * @return 影响行数
     */
    @OperateTraces(operate = "资源信息-批量创建")
    int inserts(List<ResourceCoreBean> models);

    /**
     * 按条件修改资源信息
     *
     * @param model 资源信息信息
     * @return 影响行数
     */
    @OperateTraces(operate = "资源信息-更新")
    int update(ResourceCoreUpdate model);

    /**
     * 按条件删除资源信息
     *
     * @param condition 条件
     * @return 影响行数
     */
    @OperateTraces(operate = "资源信息-删除")
    int delete(Where<ResourceCoreWhere> condition);

    /**
     * 按用户ID查询
     *
     * @param userId 用户ID
     * @return 资源信息列表
     */
    @OperateTraces(operate = "资源信息-按用户查询")
    List<ResourceCoreBean> listByUserId(OrderWhere<ResourceCoreWhere> where, Paging paging);
}
